//
//  WBBaseViewController.swift
//  YLWeibo
//
//  Created by 楊亜玲 on 16/11/9.
//  Copyright © 2016年 楊亜玲. All rights reserved.
//

import UIKit

class WBBaseViewController: UIViewController {

    // tableView
    var tableView: UITableView?
    // 刷新控件
    var refreshControl: UIRefreshControl?
    // 用户登录标记
    var userLogin = false

    var isPullUp = false
    // 访客视图信息
    var visitorViewDict: [String: String]?
    // 自定义navigationBar
    lazy var navigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: UIScreen.cz_screenWidth(), height: 64))
    // 自定义navigationItem
    lazy var naviItem = UINavigationItem()
    
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        setupUI()
        loadNewData()
    }
    
    func loadNewData() {
        // 如果子类不实际方法，默认关闭刷新控件
        refreshControl?.endRefreshing()
    }
    
    override var title: String?{
        didSet{
            naviItem.title = title
            
        }
    }
}

// 1. extension 中不能有属性
// 2. 中不能重写‘父类’本类的方法！

// MARK: - 设置界面
extension WBBaseViewController {
    func setupUI() {
        //view.backgroundColor = UIColor.cz_random()
        // 取消自动缩进 － true:会缩进20个点
        automaticallyAdjustsScrollViewInsets = false
        
        self.setupNavigationBar()
        userLogin ? self.setupTableView() : self.setupVisitorView()

    }
    
    // 添加访客视图
    private func setupVisitorView(){
        let visitorView = WBVisitorView(frame: view.bounds)
        view.insertSubview(visitorView, belowSubview: navigationBar)
        
        visitorView.visitorViewInfo = visitorViewDict
    }
    
    /// 添加下拉刷新控件
    private func setupRefreshControl(){
        // 1. 实例化控件
        refreshControl = UIRefreshControl()
        // 2. 添加到表视图
        tableView?.addSubview(refreshControl!)
        // 3.监听下拉
        refreshControl?.addTarget(self, action: #selector(loadNewData), for: .valueChanged)
        
    }
    
    /// 添加tableView
    private func setupTableView() {
        tableView = UITableView(frame: view.bounds, style: .plain)
        view.insertSubview(tableView!, belowSubview: navigationBar)
        tableView?.delegate = self
        tableView?.dataSource = self
        
        // 设置内容缩进
        tableView?.contentInset = UIEdgeInsets(top: navigationBar.bounds.height, left: 0, bottom: tabBarController?.tabBar.bounds.height ?? 0, right: 0)
        
        self.setupRefreshControl()
        
    }
    
    
    /// 设置NavagationBar
    private func setupNavigationBar(){
        // 添加自定义的navigationBar
        view.addSubview(navigationBar)
        navigationBar.items = [naviItem]
        
        // 设置navigationBar 的渲染颜色
        navigationBar.barTintColor = UIColor.cz_color(withHex: 0xF6F6F6)
        
        // 设置navigationBar 的标题颜色
        navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.darkGray]
    }
    
}

extension WBBaseViewController: UITableViewDelegate,UITableViewDataSource{
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 0
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        return UITableViewCell()
    }
    
    // 在显示最后一行的时候，上拉刷新
    func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
        
        let row = indexPath.row
        let section = tableView.numberOfSections - 1
        let count = tableView.numberOfRows(inSection: section)
        
        if row == (count - 1) && !isPullUp{
            print("上拉刷新")
            
            isPullUp = true
            // 开始刷新
            loadNewData()
        }
    }
}
